package com.zusmart.core.plugin;

import java.lang.annotation.Annotation;
import java.util.Map;

import com.zusmart.base.activity.Activity;
import com.zusmart.core.bean.BeanDefinitionRegistry;

public interface PluginManager extends Activity<PluginManager> {

	public void attachPlugin(Plugin plugin);

	public void detachPlugin(Plugin plugin);

	public boolean existsPlugin(Class<? extends Plugin> pluginType);

	public Plugin getPlugin(Class<? extends Plugin> pluginType);

	public Map<Class<? extends Plugin>, Plugin> getPlugins();

	public Map<Class<? extends Plugin>, Annotation> resolvePlugins(Class<?> beanType);

	public BeanDefinitionRegistry getBeanDefinitionRegistry();

}